package com.songyang.yougnsql.common;

import com.songyang.yougnsql.config.Config;
import com.songyang.yougnsql.config.ConfigConst;
import org.apache.logging.log4j.Logger;

/**
 * @ClassName LogHelper
 * @Description 打印日志
 * @date 2023/1/9 16:06
 * @Author yanceysong
 * @Version 1.0
 */
public class LogHelper {
    /**
     * 获取配置文件查看是否需要打印日志
     */
    private static final boolean isLog = (boolean) Config.getConfig(ConfigConst.PRINT_LOG);

    /**
     * 打印info日志
     *
     * @param logger logger
     * @param args   打印的参数，支持通配符
     */
    public static void info(Logger logger, Object... args) {
        if (!isLog || args == null || args.length < 1) return;
        int length = args.length;
        switch (length) {
            case 1:
                logger.info((String) args[0]);
                break;
            case 2:
                logger.info((String) args[0], args[1]);
                break;
            case 3:
                logger.info((String) args[0], args[1], args[2]);
                break;
            case 4:
                logger.info((String) args[0], args[1], args[2], args[3]);
                break;
            case 5:
                logger.info((String) args[0], args[1], args[2], args[3], args[4]);
                break;
            case 6:
                logger.info((String) args[0], args[1], args[2], args[3], args[4], args[5]);
                break;
            case 7:
                logger.info((String) args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
                break;
            case 8:
                logger.info((String) args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
                break;
            case 9:
                logger.info((String) args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8]);
                break;
            default:
        }
    }

    /**
     * 打印warn日志
     *
     * @param logger logger
     * @param args   打印的参数，支持通配符
     */
    public static void warn(Logger logger, Object... args) {
        if (!isLog || args == null || args.length < 1) return;
        int length = args.length;
        switch (length) {
            case 1:
                logger.warn((String) args[0]);
                break;
            case 2:
                logger.warn((String) args[0], args[1]);
                break;
            case 3:
                logger.warn((String) args[0], args[1], args[2]);
                break;
            case 4:
                logger.warn((String) args[0], args[1], args[2], args[3]);
                break;
            case 5:
                logger.warn((String) args[0], args[1], args[2], args[3], args[4]);
                break;
            case 6:
                logger.warn((String) args[0], args[1], args[2], args[3], args[4], args[5]);
                break;
            case 7:
                logger.warn((String) args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
                break;
            case 8:
                logger.warn((String) args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
                break;
            case 9:
                logger.warn((String) args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8]);
                break;
            default:
        }
    }

    /**
     * 打印error日志
     *
     * @param logger logger
     * @param args   打印的参数，支持通配符
     */
    public static void error(Logger logger, Object... args) {
        if (!isLog || args == null || args.length < 1) return;
        int length = args.length;
        switch (length) {
            case 1:
                logger.error((String) args[0]);
                break;
            case 2:
                logger.error((String) args[0], args[1]);
                break;
            case 3:
                logger.error((String) args[0], args[1], args[2]);
                break;
            case 4:
                logger.error((String) args[0], args[1], args[2], args[3]);
                break;
            case 5:
                logger.error((String) args[0], args[1], args[2], args[3], args[4]);
                break;
            case 6:
                logger.error((String) args[0], args[1], args[2], args[3], args[4], args[5]);
                break;
            case 7:
                logger.error((String) args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
                break;
            case 8:
                logger.error((String) args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
                break;
            case 9:
                logger.error((String) args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8]);
                break;
            default:
        }
    }
}
